import java.io.*;
/**
 * 将第一个参数传入的文件拆分后依次序存储到第二个参数对应的目录下
 // @param file 被拆分的源文件
 //* @param path 拆分后的文件存储路径
 //* @param size 表示每个小文件的最大体积
 */
public final class FileHelper {

    public static void split( File file , File path , int size ) throws IOException {

        if( !file.exists() || !file.isFile() ) {
            throw new IllegalArgumentException( "被拆分的文件不存在" );
        }

        if( !path.exists() || !path.isDirectory() ) {
            throw new IllegalArgumentException( "目标位置不存在或不是有效目录" );
        }

        InputStream in = new FileInputStream( file ) ;

        int i = 1;
        byte[] bytes = new byte[size];
        while ( in.read(bytes) != -1 ){
            OutputStream out = new FileOutputStream(path +"/"+ i);
            out.write(bytes);
            out.close();
            i++;
        }
        in.close();
    }
    /**
     //* 将第一个参数传入的目录中有序的文件合并到一个大文件( 第二个参数表示合并后的文件的存储位置 )
     //* @param path 依次序存放了一批等待合并的小文件的目录
    // * @param dest 合并之后的大文件的存储路径
     */
    public static void join( File path , File dest ) throws IOException{
        if( !path.exists() || !path.isDirectory() ) {
            throw new IllegalArgumentException( "合并的文件目录不存在或不是有效目录" );
        }

        if( !dest.exists() || !dest.isDirectory() ) {
            throw new IllegalArgumentException( "目标位置不存在或不是有效目录" );
        }

        File[] files = path.listFiles();
        int i = files.length - 1;

        String s = null;
        while( true ) {
            InputStream in = new FileInputStream(path + "/" +files[i].getName());
            int size = (int) files[i].length();
            byte[] b = new byte[size];
            in.read(b);
            in.close();

            s = new String(b) + s;

            i--;
            if (i == -1){
                break;
            }
        }

        final byte[] bytes = s.getBytes();
        OutputStream out = new FileOutputStream(dest +"/"+ "big.java");
        out.write(bytes);
        out.close();
    }

}

